package shupaiwen;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.Arrays;

public class Transform {
	// 转换功能完成后文本最后会增加一个空段，预览功能不会如此，手动保证最后一个段落为空段，否则，最后一段不会转换
	public static void transform(String ori, String dest, int maxcols,
			int space, String code) throws IOException {
		// FileInputStream fin = null;
		// int i;
		// try {
		// fin = new FileInputStream(ori);
		// } catch (FileNotFoundException e) {
		// System.out.println("file not found");
		// // return;
		// } catch (ArrayIndexOutOfBoundsException e) {
		// System.out.println("out of bounds");
		// // return;
		// }
		// int count = 0;// 确定有多少段落，每个段落将作为一个字符串，并转换成竖排
		// do {
		// i = fin.read();
		// if (i == '\n')// 可以判断windows与lunix中文本的段落数
		// count++;
		// } while (i != -1);
		//
		// // FileInputStream读入的类型是byte,先读取文本
		// // 多个段落使用byte二维数组存储
		// fin = new FileInputStream(ori);// 需要重新读入文件，定位到文本最前端
		// byte[][] by = new byte[count][0];
		// // 需要判断系统的类型，若是windows系统则i!='\r'|i!='\n'，lunix系统则i!='\n';
		// Properties props = System.getProperties(); // 获得系统属性集
		// String osName = props.getProperty("os.name"); // 操作系统名称
		// if (osName.equals("Linux") || osName.equals("linux")) {
		// for (int j = 0; j < count;) {
		// i = fin.read();
		// if (i == -1)
		// break;
		// if (i != '\n') {
		// by[j] = Arrays.copyOf(by[j], by[j].length + 1);
		// by[j][by[j].length - 1] = (byte) i;
		// } else
		// j++;
		// }
		// }
		// if (osName.equals("Windows") || osName.equals("windows")) {
		// for (int j = 0; j < count;) {
		// i = fin.read();
		// if (i == -1)
		// break;
		// if (i != '\r' | i != '\n') {
		// by[j] = Arrays.copyOf(by[j], by[j].length + 1);
		// by[j][by[j].length - 1] = (byte) i;
		// } else
		// j++;
		// }
		// }
		// fin.close();
		//
		//	
		//
		// // 将其转换为字符串
		// String[] strs = new String[count];// 存储每一段的竖排文字
		// // StringBuilder stb = new StringBuilder();// 将所有段落的竖排文字连接成一个字符串
		// PrintStream out = new PrintStream(new FileOutputStream(dest, true));
		// for (int j = 0; j < count; j++) {
		// strs[j] = new String(by[j], code);//
		// // 半角转全角
		// strs[j] = QuanjiaoBanjiao.toquanjiao(strs[j]);
		// if (space == 0)
		// strs[j] = Shupaiban.shupaiwenzinospace(strs[j], maxcols);
		// if (space == 1)
		// strs[j] = Shupaiban.shupaiwenzihasspace(strs[j], maxcols);
		// out.println(strs[j]);
		// // System.out.println("正在输出文件到文本，请耐心等候");//可以根据字符数来确定是否输出
		//
		// }
		// out.close();

		// 测试是否可以取代以上代码
		BufferedReader bin = new BufferedReader(new InputStreamReader(
				new FileInputStream(ori), code));
		String[] s = new String[0];
		String ss;
		while ((ss = bin.readLine()) != null) {
			s = Arrays.copyOf(s, s.length + 1);
			s[s.length - 1] = ss;
		}
		bin.close();
		// 将其转换为字符串
		PrintWriter pout = new PrintWriter(new BufferedWriter(
				new OutputStreamWriter(new FileOutputStream(new File(dest), true))));
		for (int j = 0; j < s.length; j++) {
			// 半角转全角
			s[j] = QuanjiaoBanjiao.toquanjiao(s[j]);
			if (space == 0)
				s[j] = Shupaiban.shupaiwenzinospace(s[j], maxcols);
			if (space == 1)
				s[j] = Shupaiban.shupaiwenzihasspace(s[j], maxcols);
			pout.println(s[j]);
		}
		pout.close();

		System.out.println(Shupaiban.shupaiwenzinospace("感谢你使用竖排文字编辑器", 4));
	}
}
